Una de las novedades introducidas en gvSIG 2.3 y que ya comentamos en las 11as Jornadas Internacionales gvSIG (también hay una pregunta del público al final del vídeo), es la oportunidad de ejecutar código de R desde el Módulo de Scripting. Para realizar la ejecución de estos scripts de R, utilizamos la librería de Renjin. Vamos a explicar un poco más sobre esto.
Renjin es un interprete de R hecho en Java, no es exactamente el R nativo que conocemos. Nos permite ejecutar código en R a la vez que trabajar con toda la API de gvSIG, escrita en Java. Esta librería tiene sus ventajas, al estar totalmente integrada con gvSIG al soportar librerías Java, pero también tiene sus limitaciones, por ejemplo, no todas las librerías de R están disponibles para su uso con Renjin.
“Con Rejin, tenemos una gran integración con gvSIG, pero menor integración con R”
Podéis encontrar mucha más información sobre Renjin en su web, así como las librerías de R que se encuentran disponibles para su uso. Renjin se encuentra activamente en desarrollo, así que esperamos mejoras en el futuro, tanto de compatibilidad como de funcionalidad.
Os voy a mostrar un par de ejemplos. Abrimos gvSIG y vamos a Herramientas – Scripting – Editor de scripts, y aquí creamos un nuevo Script que sea de tipo R.
Podemos probar a ejecutar algo del código típico de R como sería:
main <- function() { cat( "Hello\n" ); cat( "Hello\n" ); d1 <- c(1,3,5); x <- sample(c("A", "B", "C"), size = 10, replace = TRUE) print(as.factor(x)) df <- data.frame(x = seq(5), y = runif(5)) print(df) }
El cual mostraría por consola:
Running script rtest_000. Hello Hello [1] B A B B A C B A A C Levels: A B C x y 1 1 0,869 2 2 0,85 3 3 0,255 4 4 0,497 5 5 0,549 Script rtest_000 terminated.
En el siguiente ejemplo vamos a mostrar como importar una clase de Java:
import(java.util.HashMap) main <- function() { "Ejemplo renjin con Java" ageMap <- HashMap$new() ageMap$put("Bob", 33) ageMap$put("Carol", 41) print(ageMap$size()) age <- ageMap$get("Carol") cat("Carol is ", age, " years old.\n", sep = "") print(ageMap) }
Que resultaria por consola:
Running script rtest_001. [1] 2 Carol is 41 years old. Script rtest_001 terminated.
Y por último y más interesante, vamos a mostrar como podemos interactuar con gvSIG, accediendo a una de las Vistas que tenemos abiertas para mostrar su nombre, importando las respectivas clases que necesitamos:
import (org.gvsig.app.project.documents.view.ViewDocument) import (org.gvsig.app.ApplicationLocator) main <- function() { cat( "Acceso a una Vista\n" ); application <- ApplicationLocator$getManager(); view <- application$getActiveDocument(ViewDocument); print(view$name) }
Mostraría por consola:
Running script rtest_0020. Acceso a una Vista [1] "Vista GVISG 01" Script rtest_0020 terminated.
Aún tenemos que ver la mejor forma de trabajar con Renjin y gvSIG, ya que como hemos comentado, aún estamos en proceso de desarrollo de este módulo.
Cualquier colaboración, interés o feadback que recibamos de vosotros será bien recibido.
Pingback: Ejecutando código de R desde gvSIG 2.3 mediante Renjin – GeoNe.ws
Reblogged this on másquesig.
Hola, Oscar, después de algunos años que no me comunico contigo, quiero consultarte como integrar la información que genero en gvsig con R, es decir, deseo realizar la zonificación de un cultivo donde uso los shps de suelo, altura, temperatura y otros, al generar dicha información como se integra en R y se conecta con gvsig.
saludos,
Pingback: Enlaces interesantes para Sistemas de Información Geográfica – Rubén G. Mateo
Pingback: Camino a gvSIG 2.3: Extensión de R | gvSIG blog
Pingback: ¡gvSIG 2.3 ya está aquí! | gvSIG blog